home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / c / snz128s / src / lsi.c < prev    next >
C/C++ Source or Header  |  1994-04-13  |  5KB  |  180 lines

  1. /*
  2.     SNEWS 2.0
  3.  
  4.     Locical Snews Indexer
  5.  
  6.  
  7.     Copyright (C) 1993  RJB Communications
  8.                         rjb@sound.demon.co.uk
  9.  
  10.     This program is free software; you can redistribute it and/or modify
  11.     it under the terms of the GNU General Public License, version 1, as
  12.     published by the Free Software Foundation.
  13.  
  14.     This program is distributed in the hope that it will be useful,
  15.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.     GNU General Public License for more details.
  18.  
  19.     See the file COPYING, which contains a copy of the GNU General
  20.     Public License.
  21.  
  22.     Atari version ported by Graham Judd - gjudd@siward.demon.co.uk
  23.  
  24.  */
  25.  
  26. /*---------------------------- Source Control ------------------------------*/
  27.  
  28. /*
  29.  * $Id: LSI.C,v 1.2 1994/02/05 18:48:42 gbj Exp user $
  30.  */
  31.  
  32. /**************************************************************************
  33. *   01 Jun 93   1.1    MSM  Header added                                  *
  34. *                           Snews 2.0                                     *
  35. ***************************************************************************/
  36.  
  37. #include <io.h>
  38. #include <stdio.h>
  39. #include <stdlib.h>
  40. #include <dos.h>
  41.  
  42. #ifdef ATARI
  43. #    include <errno.h>
  44. #    define clrscr()    printf("\033E")
  45. #else
  46. #    include <dir.h>
  47. #endif
  48.  
  49. #include <string.h>
  50. #include <fcntl.h>
  51. #include <conio.h>
  52.  
  53. FILE           *fidx;
  54. FILE           *fact;
  55. FILE           *ftmp;
  56.  
  57.  
  58. void byebye(char whassup[50])
  59. {
  60.     printf("*ERROR* : \"%s\" : %s\n", whassup, strerror(errno));
  61.     exit(0);
  62. }
  63.  
  64.  
  65. int main()
  66. {
  67.     int             ax, ay;
  68.     long int        groups, missing, changes, messages;
  69.     char            fname[128], fname2[128];
  70.     char            actgp[128], actcode[12], first[12], last[12];
  71.     char            actline[200], newline[200], idxline[256], gpidx[128];
  72.  
  73.     char           *Title0 = "-------------------------------------------------------------------------------\n";
  74.     char           *Title1 = "                                  * L * S * I *\n";
  75.     char           *Title2 = "                Logical Snews Indexer  ---  Version 1.1 (930411)\n";
  76.     char           *Title3 = "              (c) RJB Communications  -----  rjb@sound.demon.co.uk\n";
  77.     char           *Title4 = "           Voice [+44](0)932-253131  -------  BBS [+44](0)932-252323\n";
  78.  
  79.  
  80.     ax = ay = groups = missing = changes = messages = 0;
  81.     clrscr();
  82.     printf("%s%s%s%s%s", Title1, Title2, Title3, Title4, Title0);
  83.  
  84.     if (!(getenv("SNEWS"))) {
  85.         printf("\nYou must have the SNEWS environment variable defined,\n");
  86.         printf("    e.g.   set SNEWS=c:\\nos\\snews\n\n");
  87.         printf("The newsbase directory should be off this,\n");
  88.         printf("    i.e.   c:\\nos\\snews\\newsbase\n");
  89.         exit(1);
  90.     }
  91.  
  92.     sprintf(fname, "%s\\active", getenv("SNEWS"));
  93.     if ((fact = fopen(fname, "r")) == NULL)
  94.         byebye("ACTIVE file");
  95.     sprintf(fname, "%s\\active.tmp", getenv("SNEWS"));
  96.     if ((ftmp = fopen(fname, "w")) == NULL)
  97.         byebye("ACTIVE.TMP file");
  98.  
  99.     strset(actline, 0);
  100.     fgets(actline, 199, fact);
  101.     while ((!feof(fact)) && (strlen(actline))) {
  102.         strcpy(first, "00000000");
  103.         strcpy(last, "00000000");
  104.         strset(actgp, 0);
  105.         strset(gpidx, 0);
  106.  
  107.         for (ax = 0, ay = 0; (actline[ax] != ' '); actgp[ay++] = actline[ax++]);
  108.         actgp[ay] = 0;
  109.         for (ax++, ay = 0; (actline[ax] != ' '); actcode[ay++] = actline[ax++]);
  110.         actcode[ay] = 0;
  111.  
  112.         sprintf(gpidx, "%s\\newsbase\\%s.idx", getenv("SNEWS"), actcode);
  113.  
  114.         if ((fidx = fopen(gpidx, "rb")) == NULL) {
  115.             printf("! %s (%s) doesn't exist !\n", actgp, actcode);
  116.             missing++;
  117.         }
  118.         else {
  119.             fgets(idxline, 255, fidx);
  120.             if (strlen(idxline)) {
  121.                 for (ax = 9, ay = 0; ax < 17; first[ay++] = idxline[ax++]);
  122.                 first[ay] = 0;
  123.             }
  124.             strcpy(last, first);
  125.  
  126.             while (!feof(fidx)) {
  127.                 strset(idxline, 0);
  128.                 fgets(idxline, 255, fidx);
  129.                 if (strlen(idxline)) {
  130.                     for (ax = 9, ay = 0; ax < 17; last[ay++] = idxline[ax++]);
  131.                     last[ay] = 0;
  132.                     messages++;
  133.                 }
  134.             }
  135.         }
  136.         fclose(fidx);
  137.  
  138.         if (atoi(first))
  139.             sprintf(first, "%08d", (atoi(first)) - 1);
  140.  
  141.         sprintf(newline, "%s %s %s %s y\n", actgp, actcode, first, last);
  142.         newline[strlen(newline)] = 0;
  143.  
  144.         if (strcmp(actline, newline) == 0) {
  145.             printf("  %s", newline);
  146.         }
  147.         else {
  148.             printf("> %s", newline);
  149.             changes++;
  150.         }
  151.         fprintf(ftmp, "%s", newline);
  152.  
  153.         groups++;
  154.         strset(actline, 0);
  155.         fgets(actline, 199, fact);
  156.     }
  157.  
  158.     printf("%s%s%s%s%s\n", Title0, Title1, Title2, Title3, Title4);
  159.     printf("%12ld Groups\n", groups);
  160.     printf("%12ld Missing Groups\n", missing);
  161.     printf("%12ld Altered Indexes\n", changes);
  162.     printf("%12ld Messages\n", messages);
  163.     printf("%s\n", Title0);
  164.  
  165.     fclose(fact);
  166.     fclose(ftmp);
  167.  
  168.  
  169.     sprintf(fname, "%s\\active.old", getenv("SNEWS"));
  170.     remove(fname);
  171.     sprintf(fname, "%s\\active", getenv("SNEWS"));
  172.     sprintf(fname2, "%s\\active.old", getenv("SNEWS"));
  173.     rename(fname, fname2);
  174.     sprintf(fname, "%s\\active.tmp", getenv("SNEWS"));
  175.     sprintf(fname2, "%s\\active", getenv("SNEWS"));
  176.     rename(fname, fname2);
  177.  
  178.     return (0);
  179. }
  180.